2
תגובות
אז רציתי לקבל ביקורת על קוד קצר שרשמתי עם הפריימוורק Yii, משום שאני עובד על פרויקט והייתי רוצה להיות בטוח שאני פועל בצורה הנכונה עם הפריימוורק (בעיקר בקטע של המסד בקוד).
אם לדעתכם משהו לא טוב או שאפשר לעשות טוב יותר אני אשמח לשמוע :)
זה קוד פשוט שהמטרה שלו היא לבדוק אם קיים סרטון במסד ואם כן אז לרשום את השם שלו, ואם לא אז להציג שגיאה.
VideoController:
Video: (המודל)
תודה מראש :)
אם לדעתכם משהו לא טוב או שאפשר לעשות טוב יותר אני אשמח לשמוע :)
זה קוד פשוט שהמטרה שלו היא לבדוק אם קיים סרטון במסד ואם כן אז לרשום את השם שלו, ואם לא אז להציג שגיאה.
VideoController:
<?php
class VideoController extends CController
{
private $video = array();
public function actionIndex($videoID = 0)
{
if ($this->findVideo($videoID))
{
$this->renderText($this->video['video_name']);
}
else
{
$this->renderText('Error: This video does not exist.');
}
}
private function findVideo($videoID = 0)
{
if (is_numeric($videoID))
{
$this->video = Video::findVideo($videoID);
if (count($this->video) == 1)
return true;
else
return false;
}
else
return false;
}
}
class VideoController extends CController
{
private $video = array();
public function actionIndex($videoID = 0)
{
if ($this->findVideo($videoID))
{
$this->renderText($this->video['video_name']);
}
else
{
$this->renderText('Error: This video does not exist.');
}
}
private function findVideo($videoID = 0)
{
if (is_numeric($videoID))
{
$this->video = Video::findVideo($videoID);
if (count($this->video) == 1)
return true;
else
return false;
}
else
return false;
}
}
Video: (המודל)
<?php
class Video extends CActiveRecord
{
public static function model($className = __CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'videos';
}
public function primaryKey()
{
return 'video_id';
}
public static function findVideo($videoID = 0)
{
return self::model()->find(
'video_id = :videoID',
array(
':videoID' => $videoID
)
);
}
}
class Video extends CActiveRecord
{
public static function model($className = __CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'videos';
}
public function primaryKey()
{
return 'video_id';
}
public static function findVideo($videoID = 0)
{
return self::model()->find(
'video_id = :videoID',
array(
':videoID' => $videoID
)
);
}
}
תודה מראש :)
2 תשובות
באופן כללי אתה עובד נכון. כל הכבוד.
הייתי מציין שאם בראוטר כתוב משהו בסגנון:
<videoID:[0-9]+>
אז בוודאות הוא יהיה numeric. אני גם לא רואה סיבה שלפונקציית חיפוש יהיה ערך ברירת מחדל לפרמטרים. אף אחד לא אמור להפעיל פונקצית חיפוש בלי פרמטרים.
בנוסף, החיפוש שאתה מבצע הוא חיפוש לפי מפתח ראשי ולכן את כל הפונקציה findVideo אפשר להחליף בשורה אחת:
$this->video = Video::model()->findByPk($videoID);
return $this->video !== null;
return $this->video !== null;
ענה
LearningYii
ב
01 ליולי 2014
#
תודה רבה :)